23

» WarCraft 3 / Замена атаки на способность

Похожие вопросы:

ответ
Ancient:
dave_wwid, на событии Юнит Атакован возможны баги и утечки. Не лучше ли на событии получает урон?
Я думаю, что вы правы...
Yuru13, вам следует выбрать событие Specific Unit Event, а в нём Получает урон (Damage taken), и создать глобальную переменную для критующего. Далее следует конвертировать триггер в текст и заменить место под Юнита в событии на некую глобальную переменную(Таковую создать через другой триггер типа Событие: Юнит атакован Условие: Атакующий = глобальной переменной атакующий Действие: присвоить свободной глобальной переменной значение атакованный юнит). Также вам пригодится Dmage Source (пишется кое-где вместо triggering unit). Damage source - это тот, кто нанёс урон. В условии пишем, чтобы Damage source соответствовал переменной.(Ну а в переменную его можно засунуть при инициализации карты, или вовсе не сувать, если он будет на карте изначально). Действия же добавляете ваши.
P.S. Конвертированием триггера лучше заняться после добавленных действий. И помните, что Нужно как минимум 2 глобальные переменные типа юнит и 2 триггера.
Недостатки способа
Данный способ будет работать только если у вас на карте одни юнит, имеющий криты с кулдауном, и если этот юнит атакует за раз одну цель... В противном случае придётся создавть локальные переменные вместо глобальных, и в одном триггере. Или же созданные переменные отметить как массивы и создать счётчик для этих переменных (Но и в таком случае не без багов и т.п.)
ответ
Ну решается всё довольно тривиально
Юнит атакован
приказ атакующего юнита не равен "атаковать"
б.е. - приказать атакующий ПКМ атакованного
При первой атаке произойдёт небольшая потеря времени, т.к. получив при каз юнит заново начнёт анимацию атаки. Зато орб будет прокать.
Алсо если приказать юниту перейти нападая на противников (триггерно или ручками) - приказ юнита будет какой-надо и орб будет срабатывать.

23

» WarCraft 3 / Подчинение

Похожие вопросы:

ответ
WiLian, так я имел в виду два триггера..
Вот так: xgm.guru/files/100/198847/comments/366316/Give.w3m
Скопируй 2 триггера и переменную-массив юнитов Selected в свою карту.
Тут даже без проверки получается вроде.
Если нужно больше игроков, чем 4 - то добавляй события с ними.
Sergey105, а как это в один триггер впихнуть?
ответ
Воскрешает моба из которого выпала эта руна в качестве лута.
ответ
1 - очень просто, запомнил номер владельца в переменную при касте, через нужное время возвращаешь бывшего
2 - тоже очень просто, делаешь заклинание на основе пустышки в области, можно на основе канала, триггерно выделяешь всех врагов вокруг точки каста и меняешь им владельца с нужным графическим эффектом
ответ
~8gabriel8:
Открываешь редактор объектов на вкладке Предметы и находишь руну, нажимаешь Ctrl+D, станут видны все рав-коды.

23

» WarCraft 3 / Перенос ландшафта

Похожие вопросы:

ответ
Судя по скрину, это версия 1.26. Для проверки кода подойдёт программа UnrealJassSpy www.hiveworkshop.com/threads/unreal-jass-spy-1-26a.244384
Кидаешь её файлы в папку с игрой, запускаещь игру, ждешь внедрения (жмешь ок), запускаешь карту. Потом в логах JassSpy.txt смотришь на каком месте у тебя прервалась игра.

23

» WarCraft 3 / Dummy unit

Похожие вопросы:

ответ
По коду честно говоря ничего не понятно. Но в отлове урона это обычная ошибка, когда урон наносится внутри триггера, отлавливающего урон или если он вызывает действия которые наносят урон и снова вызывают этот триггер. Бесконечная рекурсия в общем роняет игру.
ответ
Где код таймера который должен двигать снаряд?
ответ
map_maiker, какой то глупый код, у тебя если нет аргумента dummy - то идет обрыв потока, ибо обращение к пустой переменной.
	function DummyTargetCast takes unit cast, unit targ, integer spellid, integer order returns nothing
    	local unit dummy = CreateUnit( GetOwningPlayer(cast), 'hdum', GetUnitX(targ), GetUnitY(targ), bj_UNIT_FACING )
		call SetUnitPathint( dummy, false )
		call UnitAddAbility( dummy, spellid )
		call UnitApplyTimedLife( dummy, 'BTLF', 5.00 )
		call UnitShareVision( targ, GetOwningPlayer(cast). true )
		call IssueTargetOrder( dummy, order, targ )
		call UnitShareVision( targ, GetOwningPlayer(cast). false )
		set dummy = null
	endfunction
	// пример использования
	call DummyTargetCast( GetSpellAbiliutyUniut(), GetSpellTargetUnit(), 'Ahtb', OrderId("thunderbolt"))

Код не универсальный, да и вовсе можно круче и оптимальнее, ты совершенно не учитываешь следующие вещи:
  1. выгоднее юзать специально заготовленные глобальные переменные чтобы хранить того же даммика.
  2. даммик может мешатся, толкатся, желательно создавать его в позиции цели, и убирать карту путей.
  3. не стоит ставить короткое время жизни даммикам, если они наносят урон, может случится конфуз - кто убил не известно
  4. Даммик может не видеть цель, поэтому нужно создавать даммика за врага (но в настройках способности указать цели - союзники) что катит только для спеллов не наносящих урон, или делать SharedVision.
ответ
дебагом научись пользоваться, у тебя ошибка в слове
local SpellStruct s = LoadInteger(Hash,GetHandleId(T),StringHash("Strcut"))
call SaveInteger(Hash,GetHandleId(T),StringHash("Struct"),s)

23

» WarCraft 3 / Баг в анимации Stand

Похожие вопросы:

ответ
В "графика -нужная анимация" ничего не менял?
Вполне возможно, что для этой пассиви она по дефолту стенд ченннел проигрывает или попросту добавляет тег ченнел.
ответ
Ну это смешно.
Всё дело в ОС. После того как Windows 10 build 1607 вышел из режима смены пользователя, запустил карту из этого комментария, и анимации поломались. Перезагрузил компьютер, анимации стали верными.
ответ
Получите, распишитесь.
Проблема была в том, что те две штуки, что показаны на скрине, не были прикреплены ни к какой кости. Тупо висели в воздухе проще говоря.
Анимация Stand тож сделал как надо.
ответ
Если первый кадр анимации правильный, попробуйте удалить последний кадр анимации, потом скопировать кадр в её начале (Именно через команду "Кадры" - "Копировать (Ctrl + C)" !) и вставить его в конец. То же самое проделать с другой анимацией (Stand 2). Если это не поможет, тогда надо детально смотреть саму модель, что с ней не так. И ещё советую сохранять промежуточные версии модели, чтоб можно было сделать "откат", если возникнут ошибки.
ответ
проверьте анимацию в model editor'е
если там криво, значит нужно искать кривой кадр, копировать его, удалять, и вставлять снова на то же место

23

» WarCraft 3 / Как сделать тим колор

Похожие вопросы:

ответ
советую переименовать модель\заребутить комп
текстуры стандартные юзал, я так понимаю
ответ
~8gabriel8:
Невозможно дать тимколор декорации. Можно ставить нужный тимколор в 3D-редакторе mdlvis, либо делать декорации из зданий, которым дана способность Москиты (Aloc).

23

» WarCraft 3 / Помощь

Похожие вопросы:

ответ
такое чувство будто моё сообщение проигнорили

Поменяй максимум пищи на ограничение пищи

23

» WarCraft 3 / дальность атаки

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
lll_Kirito_lll:
Так что за прием со сферой?
Ставишь юниту в разделе Бой - Атаки на Нет, потом делаешь две способности на базе одной из сфер (например Предмет: электрическая атака), у одной из них Включен индекс атаки - 1, у другой - 2. Добавляешь первую способность юниту в РО. Когда тебе нужно изменить дальность атаки - удаляешь ту способность сферы, которая есть у юнита и добавляешь другую. Правда при этом не будет видно иконки атаки.
ответ
  1. Способность "Склад" убирает атаку. Нужна атака - не добавляй "Склад".
  2. Без дополнительных выкрутасов - нет.
ответ
Вообще в мемхаке есть же.
Но новички в картостроительстве, большинство серверов и отчасти последний патч варкрафта в мемхак не понимают.
ответ
Морф в другого героя, можно практически без кода, про руны и морфы была статья.
Так же мемхаком можно редактировать параметры атаки.
xgm.guru/p/wc3/powerups вот линк
ответ
Если не ошибаюсь - нужно еще дистанцию получения приказа поднять

ответ
так это самый простой вариант там приказ сам отлавливать .а не замах я так к примеру написал ( но гемора с проверками будет много мне кажется )
можно еще посути менять дистанцию получение приказа на отаку менять у юнита
call SetUnitAcquireRangeBJ( gg_unit_Hblm_0000, 100.00 )
кароч сделал только до ума довести нужно но вроде все работает.
ответ
Для увеличения дальности атаки используют улучшение на основе длинностволых мушкетов. Добавить всем героям это улучшение после чего при получении предмета выставляется уровень улучшения функцией SetPlayerTechResearched
ответ
~8gabriel8:
Просто улучшение на основе Длинноствольных мушкетов Альянса.
ответ
А как эту дистанцию получения приказа настроить?
РО -> атака: дальность получения приказа в свойствах юнита.

23

» WarCraft 3 / Герой не наносит урон

Похожие вопросы:

ответ
Баг абилки
исправляется с помощью тригга - добавляем анимационный таг, счетчик для количества ударов и даем руну на морф с другим типом атаки\бонус к урону\...
само собой абилку заменяем другой, можно на основе канала
ответ
Юнит атакует, ждать время точки повреждения, потом ждать расстояние до цели атакованного юнита, деленное на скорость снаряда. Но промах учитываться не будет конечно. Можно как-то попробовать через юнит получает урон.
ответ
Сделать области (безопасные зоны).
Периодическое событие - каждую секунду.
Условие - время > 6.00 и время < 18.00.
Действие - если герой не в области 1 или герой не в области 2 и т. д., то уменьшить жизнь на 85.00.
ответ
Вот держи. За подробностями в вк можешь обратится и если такое дело помогу доработаю систему на jass ( мой вк - vk.com/id446544976 )
ответ
  1. событие урона показывает сколько нанесет урона сейчас, но урон еще не пришел. урон происходит через 0.00 сек.
  2. у вас может быть в этот момент максимальный запас здоровья (например у курицы 10 хп). А урон противника получается слишком большим.
раскрыть
  • 2.1. Манипуляциями с хп через команды типа set life of unit вы не всегда можете наперед подправлять. Тк хп может упереться в лимит запаса здоровья юнита. А получаемый урон больше чем запас, и юнит умрет.
  • 2.2. Можно сделать юнита временно неуязвимым, тогда атака не срабатывает
2.3.поэтому самое идеальное даем абилку с максимальным запасом здоровья с 999999к хп. Юнит точно не умрет от урона.
после таймера 0.00 сек убираем абилу и подправляем как надо.
ты можешь делать проверки сколько очков осталось на поглощение

Nemezid, это незаметно, тк все происходит очень быстро.

23

» WarCraft 3 / ИИ

Похожие вопросы:

ответ
вопросы типа сделайте за меня не принимаются
по поводу того как это делать написано здесь xgm.guru/p/wc3/articles
ответ
BrEd Pitt, что значит использовать
берёшь и создаёшь юнитов для резервного игрока а потом отдаёшь им приказ
ответ
Возможно listfile.txt повредился.
Перекачай его.
ответ
есть событие - юнит получает урон. в нём отслеживается как жертва, так и наносящий урон. можно хоть через хэш, хоть через структуру Юнита записывать всё, что угодно. Кто от кого конкретно сколько получил урона, кто кому сколько нанёс, сколько провисел на ком-то бафф яда и т.п. (Сначала был loop, а теперь периодический триггер). Каждые N секунд, перебираешь всех юнитов в массиве или списке, и отслеживаешь всё, что надо.
Структура - Unit. У неё есть двойной список с юнитами и уроном от яда (полученным или нанесённым - зависит от того, у кого будет этот список - у жертв или у тех, кто наносит яд). Типа DoubleList. В DoubleList есть элементы DoubleElement. В каждом таком элементе записаны unit и real (урон от яда от этого юнита). При получении урона от яда перебирается список, если юнит уже есть, урон от него (или ему) прибавляется. Если нет, то создаётся новый элемент с новым юнитом.
Периодически у нужных юнитов эти списки перебираются. Всё.
ответ
Diazon, прочти статьи по массивам/структурам
после чего юзай двухмерные массивы/поля-массивы

23

» WarCraft 3 / Свечение героев в рефорже

Похожие вопросы:

ответ
Я так понимаю это по поводу того же вопроса?
Совсем недавно появился русификатор для рефа, у меня рефа, конечно же, нет, но тебе, вероятно, поможет)

23

» WarCraft 3 / бонусы скорости атаки от ловкости

Похожие вопросы:

ответ
Поскольку его не пугает наличие большого влияния промахов на геймплей - скорее всего он делает рпг. Имхо в рпг всегда клево смотрятся тексттаги полученного урона, для создания которых необходимы триггеры на отлов получения урона. А отлавливаемый урон - можно и прохилить.
Для прохила(и вообще всех манипуляций с задержкой в 0.00 сек) лично я юзаю такие костыли:
Либа здесь только для доп табуляции. Я за чистый жасс + дефайны.
library ZeroTimeEvent

    globals
        constant integer ZTEArraySize = 64//Even 32 is alot, 64 is too much! Exactly what I need!
        timer Zero//Used for 0. sec uses
        integer ZTECurrent = 0
        unit array ZTEUnits[ZTEArraySize]
        integer array ZTEIntegers[ZTEArraySize]
        real array ZTEReals[ZTEArraySize]
        trigger array ZTETriggers[ZTEArraySize]
    endglobals
    
    function ZeroTimeEvent takes nothing returns nothing
            loop
                set  ZTECurrent = ZTECurrent - 1
                call TriggerExecute( ZTETriggers[ZTECurrent] )
                exitwhen ZTECurrent < 1
            endloop
    endfunction
    
    #define ZTEAddUnit(u) = {
        set  ZTEUnits[ZTECurrent] = u
    }
    
    #define ZTEAddInteger(i) = {
        set  ZTEIntegers[ZTECurrent] = i
    }
    
    #define ZTEAddReal(r) = {
        set  ZTEReals[ZTECurrent] = r
    }
    
    #define ConfirmZTE(trig) = {
        set  ZTETriggers[ZTECurrent] = trig
        set  ZTECurrent = ZTECurrent + 1
        call TimerStart( Zero, ZeroTime, false, function ZeroTimeEvent )
    }
    
    
    
endlibrary
Пример использования
#define UnitRemoveForceAttack(u) = {
    call UnitAddAbility( u, 'Abun' )
    call UnitRemoveAbility( u, 'Abun' )
         ZTEAddUnit(u)
         ConfirmZTE(CheckIfUnitHasA002)
}
Минус такой системы в необходимости создавать триггер для каждого блока кода, т.к. массивы блоков кода запрещены
ответ
что-то не вижу на скрине как вы пытаетесь запихнуть в if/then/else. Почему должен угадывать
Предположение: ошибка - локальные переменные объявляются всегда первыми. Если там будет какое-то другое действие, а объявление локалок ниже, то это ошибка. Ты вперед, наверное, поставил действие "if/then/else", а потом начал объявлять что-то там,
правильно
local unit u
if (условие) then
	действие
endif
не правильно
if (условие) then
	local unit u
endif
Локалки вначале функции всегда объявляются. Можете в код конвентировать и посмотреть.
вейты не юзайте лучше, используйте таймер. Он поток паузит, еще работает во время паузы, и не точен .
ответ
посмотри как у урсы сделано
Там и скорость атаки (со счетчиком ударов) есть и алгоритм добавления зеленого урона
ответ
  1. Есть функция проверки кол-ва ловкости героя, при этом можно посмотреть сколько ловкости от характеристик и сколько от предметов, исходя из кол-ва ловкости вручать предметные абилки на атаку.
  2. Самое простое - апгрейды, триггерно повышать уровень улучшения которое будет действовать на героя, увы это не идеальный вариант, но один из самых просты. Так же вручать способности предметов на регенерацию здоровья \ маны.
  3. Напрямую - никак, есть место только под 5 способностей. Делать свою систему прокачки способностей из спеллбука или какие либо еще способы, на подобии рпгшных карт.
ответ
Разобрался в чём дело. Может там где-то что-то и не донулил, но основная причина утечек из-за триггеров d1 и d2
Способность выложил у себя в блоге, там буду её обновлять (если это почему-то интересно)

23

» WarCraft 3 / Команды триггера

Похожие вопросы:

ответ
старый запрос
ответ
~8gabriel8:
Заносишь бараки в массив переменной B. Задаёшь целочисленную переменную Ir = (случайное число от 0 до 3). Отдаёшь приказ на постройку юнита B(Ir).
ответ
Событие юнит получает урон регистрируется на конкретного юнита.
Для того что бы отлавливать урон по цели твоего "щита", нужно создать для цели (т.е. для того юнита, на которого накладывают щит) отдельное событие на получением им урона. И делать это надо именно в тот момент, когда ты накладываешь щит.
Для этого есть функция добавить событие в триггер, в ней можно указать конкретного юнита и само событие получения урона. Дальше тебе придётся только лишь определить был ли юнит в момент получения урона под действием "щита" и дальше блокировать урона (восстанавливать хп юнита).
Так же надо отметить момент, что если ты для юнита создаёшь больше ОДНОГО события на получение урона - они будут работать каждый сам по себе (т.е. при получении урона 1 раз, будут срабатывать 2 события, и триггер будет срабатывать ДВА раза = больше события и больше срабатываний в один момент времени).
Для этого надо маркеровать юнитов, для которых создаётся событие на получение урона (например заносить их в группу юнитов, а перед этим проверять есть ли юнит в этой группе).
ответ
не давно был вопрос и есть возможно реализовать вывод через MME

ответ
Команда работает как раз-таки. А вот то, что в самих триггерах - нет.

23

» WarCraft 3 / Нестандартная декорация

Похожие вопросы:

ответ
Мне кажется, что добавить простенькую анимацию исчезновения, длинною в кадр было бы самым разумным и простым решением. Научу в личке, если хочешь.
ответ
почему так долго грузится карта
Потому что огромный Нестандартные объекты может тысяч или больше или Спелл герой до 100 уровень.
из них 60 загрузка просто висит на 1/5.
Если нетак? Проверь если есть файлы war3map.j папка Game\WarcraftIII, надо удалить файл. очень давно тоже 1 раз что за вылет или неправильно выполняет триггер.
Есть способы ускорить загрузку карты не экономя в редакторе объектов
Есть Widgetizer, там очень быстрая загрузка игра, но плохо работает спелл или текст.
ответ
Мы уже долго ведем дискусию по этому вопросу лудший способ зделай здание с необходомой тебе моделью и дай москитов.
ответ
~8gabriel8:
Невозможно дать тимколор декорации. Можно ставить нужный тимколор в 3D-редакторе mdlvis, либо делать декорации из зданий, которым дана способность Москиты (Aloc).
ответ
Сам разобрался - рассчитал границы в Model Editor`e.

23

» WarCraft 3 / Проблема с источниками частиц

Похожие вопросы:

ответ
закрыт по таймауту
ответ
делай хелпер к источнику частиц с теми же координатами, и поворачивай его когда нужно
ответ
~8gabriel8:
Какие именно эффекты в модели дублировал, а какие создал с нуля? Надо попытаться сравнить эти эффекты, сохранив модель в формат mdl и открыв в блокноте. Может быть дело даже не в самих эффектах, а в упоминании где-то их ID.
ответ
текстура у источника есть? после дублирования она отсутствует

23

» WarCraft 3 / Транспортное средство

Похожие вопросы:

ответ
Ярг Восьмой:
Есть вариант оперировать при помощи морфа, превращая воздушную единицу в наземную. Что-то вроде имитировании посадки на аэродром. это можно сделать через отлов приказов с проверкой расстояния между единицей и зданием, а также при выгрузке просто отлавливать выгруженную единицу, и морфить обратно влетающую.
ответ
у миньона, который указан в DataD, должен быть уровень меньше, чем у цели, либо у миньона раса должна быть не demon
ответ
~8gabriel8:
Зверобойщик, во-первых, триггеры варика по сути представляют собой упрощённое программирование, ими делают свой движок игры, если нужно, например, симулятор гонок, шутера, РПГ с видом от третьего лица, даже авиасимулятор и прочее. Если ты в них не разбираешься, либо разбираешься очень плохо, то более половины своих идей не сможешь реализовать. Говорю по жизненному опыту, в детстве научился в редакторе карт к Героям 3 делать полноценные карты и кампании без триггеров, думал, что и к остальным играм так легко смогу что-то делать, но не тут-то было!
Во-вторых, возможность носить несколько видов оружия у юнита ты преподносишь как нечто обязательное, но если для людей и орков это ещё будет нормально, то вурдалаки нежити сражаются только своими когтями, а хрупкие лучницы ночных эльфов не будут в руки тяжеленные молоты брать, чтобы померяться силой с мужиками в ближнем бою. Помимо отсутствия в войнах древности летающих юнитов, есть ли там водоплавающие? Это всё проблемы, которые ты хочешь на потом отложить, но это те проблемы, которые нужно сразу как-то решить, чтобы понять урезанность своей идеи, либо даже полную невозможность осуществления.
В-третьих, почему-то только четыре картинки отображается, судя по которым, способности в войнах древности в целом имеют свои аналоги в варике, но опять же не те, которые выше упомянул. А упомянул не случайные способности, а такие, которые затруднительно было бы реализовать, если в игре нет аналогов. Как реализуешь поднятие скелетов из трупа, например? Оно обязательно нужно - это ключевая особенность нежити.
В-четвёртых, под устройством файлов подразумевал, что ты умеешь открывать архивы игры, форматы изображений и прочих файлов, а также знаешь, почему там что-то сделано так, а не иначе. Например, в варике текстуры почвы представляют собой изображение 256х512 или 256х256 в зависимости от того, будет ли текстура накладываться сверху на другие при соприкосновении, либо всегда будет снизу. Если будет накладываться, то левая часть изображения поделена на зоны 4х4, в каждой из которых указан вариант для разных вариантов соприкосновения текстур, в правой части тоже зоны 4х4, где каждый кусочек полноценной текстуры земли имеет небольшие изменения, чтобы в редакторе почва получалась разнообразной (где-то камень, где-то кочка, где-то полевые цветы), а не наскучивала неестественностью игроку. То есть нельзя просто любое изображение туда поставить, в игре будет смотреться шахматной доской, а не единым пространством.
В-пятых, если почитаешь про этот проект, то изначально Armies of Azeroth не делались под Starcraft 2, а были обновлением моделек для варика под названием Reborn или Resurrection, запамятовал точное название. Мотивы их перехода на другой движок мне неизвестны, но вроде как это было одним из условий объединения двух или более проектов (вроде бы трёх), которые по отдельности вряд ли бы были доведены до конца. Это к тому, что идеей создания новых моделек всерьёз горело множество талантливых людей, и они смогли довести дело до конца, лишь скооперировавшись на международном уровне. А у тебя единомышленников, насколько понимаю, нет?
В-шестых, почти не играю, не хочется касаться нового, сейчас акцент в играх на графику и мультиплеер смещён, либо казуальщину, а мне нравится наслаждаться глубоким сюжетом в одиночку)
P. S. Даже не трать время и энергию на уговоры.
В-седьмых, переносные или подвозные лестницы, тут не столь принципиально. В зависимости от модели лестницы будет своя реализация. В твоём случае потребуется модель переносчика лестницы с анимацией, как он её ставит. Потом лестница у него исчезает и сразу появляется на её месте декорация лестницы из категории Мосты и подъёмы. Тут долго всё это описывать, скажу только, что поднимается по ней юнит гладко, проверял много раз)

23

» WarCraft 3 / Добыча камня

Похожие вопросы:

ответ
Поиграйся с орбэффектами, добавляя в разрешённые цели необходимую клиссификацию. А вообще, просто поступи так:
Атака есть изначально, но при ударе юнитом по камню или дереву, проверка, имеет ли он кирку, и если да, тогда ролить переменную от N до N, и если равно N - создать такой то ресурс.
Можно также сделать систему с уровнем кирки(ну типа деревянная каменная железная алмазная окда), и по уровню кирки определять коилчество последовательностей "Иначе": Роллить первое число от 1 до 100 - камень. Если не выпал, но кирка у тебя выше деревянной - Роллить от 1 до 200 - железо. Если не выпало, но кирка выше каменной - роллить от 1 до 1000 - аметист, и т.д.
ответ
Попробуй эту систему. Правда, в мультиплеере она не тестировалась.
ответ
Daniil33, нет, надо через if-then-else проверять, что камень там еще "живой", и если нет, создавать новый и заносить в переменную.
И так циклом для каждой области
Сами области в массив заносить при инициализации карты

23

» WarCraft 3 / Как убрать выбор игрока при запуске карты?

Похожие вопросы:

ответ
Если запускаемая сложность главы отличается от стандартной, то оставить так, как есть, а если нет - то попытаться считать то, что было записано в предыдущей главе (если не записано - сбросить к стандартной).
Вообще, сама функция не запускает уровень с какой-то сложностью. Она просто задает значение глобальной переменной:
Код функции
function SetNextLevelBJ takes string nextLevel returns nothing
    if (nextLevel == "") then
        set bj_changeLevelMapName = null
    else
        set bj_changeLevelMapName = nextLevel
    endif
endfunction
Если копать глубже, то вся проблема здесь:
Код функций
function CustomVictoryOkBJ takes nothing returns nothing
    if bj_isSinglePlayer then
        call PauseGame( false )
        // Bump the difficulty back up to the default.
        call SetGameDifficulty(GetDefaultDifficulty())
    endif

    if (bj_changeLevelMapName == null) then
        call EndGame( bj_changeLevelShowScores )
    else
        call ChangeLevel( bj_changeLevelMapName, bj_changeLevelShowScores )
    endif
endfunction

function CustomVictoryQuitBJ takes nothing returns nothing
    if bj_isSinglePlayer then
        call PauseGame( false )
        // Bump the difficulty back up to the default.
        call SetGameDifficulty(GetDefaultDifficulty())
    endif

    call EndGame( bj_changeLevelShowScores )
endfunction
Если интересно, откуда все это берется, то нужно посмотреть устройство функции CustomVictoryBJ и все вызовы, следующие из нее.
Чтобы править проблему без создания костылей на кэше, то придется переписать близовскую функцию под себя (без сбрасывания сложности), а потом использовать ее вместо оригинальной в своей кампании (удобства ради можно использовать дефайн на cJass).
ответ
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode

23

» WarCraft 3 / Проглотить

Похожие вопросы:

ответ
способности кодоя (ээх посмотрел бы):
Проглотить 'Adev' - проглатывает указанное существо и переваривает, нанося урон указанный в скиле "Еда"
Еда 'Advc' - здесь можно указать сколько урона наносит перевариваемым существам в секунду. И сколько может вместить в желудок существ.
Эти способности друг с другом связаны
ответ
leroydraigo, просто надо пассажира от труповозки использовать. Всё работает.
ответ
Нет ошибки. Максимальный уровень монстров применяется только для нейтрально-враждебных жертв зверя. То есть, если у жертвы будет какая-либо раса, в редакторе объектов, отличная от "монстров", то ограничения уровня применяться не будут.
ответ
rsfghd:
Как узнать, кушает ли юнит кого-нибудь в данный момент или нет?
По наличию баффа Bdvv у него.
Если есть бафф = он переваривает кого-то.

rsfghd:
а как я найду того самого кодоя, что его съел?
Записывай пары юнитов в момент каста.
ответ
Да, не работает по воздушным ограничение движка.
Решение только тригерный аналог.

23

» WarCraft 3 / Кастомная озвучка проблемы

Похожие вопросы:

ответ
"Набор звуков" нельзя сделать через триггеры, но можно попробовать через импорт файлов заменить стандартные файлы в уже существующих наборах.
Для этого импортируемому файлу надо прописать путь заменяемого.
ответ
~8gabriel8:
Это особенность патча 1.30, на 1.26 всё нормально с этим. Может быть попробовать поменять приоритет кампании в файле priority, в статье про mix-архив это подробнее описано.